package com.qq.first_project.controller.common;


import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.qq.first_project.common.R;
import com.qq.first_project.entity.Type;
import com.qq.first_project.service.TypeService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.*;

import java.util.List;


/**
 * <p>
 * 商品类型 前端控制器
 * </p>
 *
 * @author Qiu
 * @since 2022-04-06
 */
@RestController
@CrossOrigin //跨域
@RequestMapping("/common/type")
public class TypeController {

    @Autowired
    private TypeService typeService;

    /**
     * 分页模糊查询
     * @return
     */
    @GetMapping("list")
    R list(){
        List<Type> list = typeService.getList();
        return R.ok().data("data",list).message("获取分类成功");
    }

    /**
     * 分页模糊查询
     * @return
     */
    @GetMapping("page-list")
    R listAll(ModelMap modelMap, @RequestParam("current") int num, @RequestParam("pageSize") int size, @RequestParam("name") String name){
        Page<Type> page= new Page<>(num,size);
        IPage<Type> pageList = typeService.getAllType(page,name);
        modelMap.addAttribute("page", pageList);
        return R.ok().data("data",pageList).message("获取分类成功");
    }

    /**
     * 根据id查询
     * @return
     */
    @GetMapping("getById")
    R getById(Long id){
        Type type = typeService.getType(id);
        if (type != null) {
            return R.ok().data("data",type).message("获取成功");
        }else {
            return R.error().message("获取失败");
        }
    }

    /**
     * 新增
     * @param type
     * @return
     */
    @PostMapping("save")
    R save(Type type){
        Type type1 = typeService.getTypeByName(type.getName());
        if (type1 != null) {
            return R.error().message("不能添加重复的分类");
        }

        int result = typeService.saveType(type);
        if (result != 0) {
            return R.ok().message("保存成功");
        } else {
            return R.error().message("保存失败");
        }
    }

    /**
     * 删除
     * @param id
     * @return
     */
    @PostMapping("delById")
    R delById(Long id){
        typeService.deleteType(id);
        return R.ok().message("删除成功");
    }

    /**
     * 修改
     * @param type
     * @return
     */
    @PostMapping("updateById")
    R updateById(Type type){
        int result = typeService.updateType(type);
        if (result != 0) {
            return R.ok().message("修改成功");
        } else {
            return R.error().message("数据不存在");
        }
    }

}
